package com.xuetang9.service.sn;


import com.xuetang9.BO.CodeLengthBO;
import com.xuetang9.Query.AccountLoginQuery;
import com.xuetang9.Query.PhoneAccountQuery;
import com.xuetang9.domain.User;
import com.xuetang9.dto.sn.MessageDTO;
import com.xuetang9.dto.sn.VerificationCodeMessageDTO;

/**
 * @类: LoginService
 * @描述: 登录服务
 * @date: 2020/5/11
 * @author: Admin
 * @ver 1.0.0
 * @since JDK 1.8
 */
public interface LoginService {

    /**
     * 根据用户密码返回登录信息
     * @param user 用户信息
     * @return 用户
     */
    User login(User user);

    /**
     * 进行账号密码登录验证
     * @param accountLoginQuery 接收的用户输入的账号密码
     * @return 反馈信息
     */
    MessageDTO login(AccountLoginQuery accountLoginQuery);

    /**
     * 根据传入的验证码长度生成验证码（单纯数字）
     * @param codeLength 验证码长度
     * @return 验证码
     */
    String createCodeWithNumber(int codeLength);

    /**
     * 向用户手机号发送验证码
     * @param phone
     * @return
     */
    VerificationCodeMessageDTO getCode(String phone);


    /**
     * 向用户手机号发送验证码
     * @param phone 手机号
     * @param codeLength 验证码长度
     * @return 验证码
     */
    VerificationCodeMessageDTO getCode(String phone, CodeLengthBO codeLength);

    /**
     * 手机登录
     * @param phoneAccountQuery 接收的登录请求信息
     * @return 返回登录反馈信息
     */
    MessageDTO phoneLogin(PhoneAccountQuery phoneAccountQuery) throws Exception;

}
